Many types of control system include one or more state machine for implementing one or more control functions. A state machine is essentially a controller which controls the operation of an apparatus or the performance of a process.
State machines are commonly implemented as software in the form of a computer program for controlling a microcontroller or microprocessor. One advantage of software implemented state machines is their flexibility—a computer programmer may readily modify the state machine by changing the computer program that describes it. Also, the time required to test a software state machine can be significantly less than that of corresponding hardware, especially where the hardware comprises an Integrated Circuit which requires simulation as part of the testing process. A disadvantage of software implemented state machines is relatively slow operation speed. As a result, software state machines are increasingly unsuitable for many real-time applications, particularly in the field of telecommunications.
It is also known to implement state machines in hardware. Typically, a hardware state machine comprises one or more combinational logic circuits. Hardware state machines are relatively fast in operation but suffer from the disadvantage of being inflexible—modifying hardware is generally much more impractical than modifying software, especially where the hardware comprises an integrated circuit. Also, the time required to test a hardware state machine is long in comparison with a corresponding software state machine.
It would be desirable, therefore, to provide a state machine which provides improved flexibility combined with improved performance.